/*
 * SPDX-FileCopyrightText: 2023 Andrew Gunnerson
 * SPDX-License-Identifier: GPL-3.0-only
 */

package com.sanji.audio_test

import android.content.Context
import java.nio.file.Path
import kotlin.io.path.deleteExisting

/**
 * 安全地创建和使用临时文件的工具函数
 * 
 * @param context 应用上下文，用于获取缓存目录
 * @param prefix 临时文件名前缀，可为空
 * @param block 处理临时文件的回调函数
 * @return 回调函数的返回值
 * 
 * 注意：Kotlin/Java没有基于O_CREAT|O_EXCL的安全创建临时文件机制，
 * 所以这里使用try-finally确保临时文件被正确删除
 */
fun <R> withTempFile(context: Context, prefix: String? = null, block: (Path) -> R): R {
    // Kotlin/Java没有基于O_CREAT|O_EXCL的安全创建临时文件机制
    val temp = kotlin.io.path.createTempFile(context.cacheDir.toPath(), prefix)
    try {
        return block(temp)
    } finally {
        // 确保临时文件被删除
        temp.deleteExisting()
    }
}